package 领扣_L.两数之和_L1;

import java.util.HashMap;

/**
 * 
 * @author xuliyun
 * @summary 给定一个整数数组和一个目标值，找出数组中和为目标值的两个数。
 * 你可以假设每个输入只对应一种答案，且同样的元素不能被重复利用。
 */
public class Solution {
	public int[] twoSum1(int[] nums, int target){
		HashMap<Integer, Integer> m = new HashMap<Integer, Integer>();
		int[] res = new int[2];
		for (int i = 0; i < nums.length; i++){
			m.put(nums[i], i);
		}
		for (int i = 0; i < nums.length; i++){
			int t = target - nums[i];
			if (m.containsKey(t) && m.get(t) != i){
				res[0] = i;
				res[1] = m.get(t);
				break;
			}
		}
		return res;
	}
	
	public int[] twoSum2(int[] nums, int target){
		HashMap<Integer, Integer> m = new HashMap<Integer, Integer>();
		int[] res = new int[2];
		for (int i = 0; i < nums.length; i++){
			if (m.containsKey(target - nums[i])){
				res[0] = i;
				res[1] = m.get(target - nums[i]);
				break;
			}
			m.put(nums[i], i);
		}
		return res;
	}

}
